union problems in c